<?php

require_once(BaseConfig::LoadClass('objeto_base.class.php'        ));
require_once(BaseConfig::LoadClass('filtro.class.php'             ));
require_once(BaseConfig::LoadClass('abc.class.php'                ));
require_once(BaseConfig::LoadClass('datos_cotizacion_qualitas.class.php'));

class CotizacionQualitas extends ObjetoBase {
  var $intIdCotizacion    ;
  var $intIdDatoCotizacion;
  var $intTipo            ;
  
  var $strNoCotizacion    ;
  var $strNoEndoso        ;
  var $strTipoEndoso      ;
  var $strNoOtra          ;
  
  var $fltPrimaNeta       ;
  var $fltPrimaTotal      ;
  
  var $strXMLEnvio        ;
  var $strXMLRespuesta    ;
  
  var $strArrDatos        ;
  
  function CotizacionQualitas($intIdCotizacion = 0) {
    $arrMapaDatos = Array();
    
    $arrMapaDatos['id_cotizacion'     ] = Array('NombreVariable' => 'intIdCotizacion'    , 'TipoVariable' => 'I');
    $arrMapaDatos['id_dato_cotizacion'] = Array('NombreVariable' => 'intIdDatoCotizacion', 'TipoVariable' => 'N');
    $arrMapaDatos['tipo'              ] = Array('NombreVariable' => 'intTipo'            , 'TipoVariable' => 'N');
    
    $arrMapaDatos['no_cotizacion'     ] = Array('NombreVariable' => 'strNoCotizacion'    , 'TipoVariable' => 'S');
    $arrMapaDatos['no_endoso'         ] = Array('NombreVariable' => 'strNoEndoso'        , 'TipoVariable' => 'S');
    $arrMapaDatos['tipo_endoso'       ] = Array('NombreVariable' => 'strTipoEndoso'      , 'TipoVariable' => 'S');
    $arrMapaDatos['no_otra'           ] = Array('NombreVariable' => 'strNoOtra'          , 'TipoVariable' => 'S');
    
    $arrMapaDatos['prima_neta'        ] = Array('NombreVariable' => 'fltPrimaNeta'       , 'TipoVariable' => 'N');
    $arrMapaDatos['prima_total'       ] = Array('NombreVariable' => 'fltPrimaTotal'      , 'TipoVariable' => 'N');
    
    $arrMapaDatos['xml_envio'         ] = Array('NombreVariable' => 'strXMLEnvio'        , 'TipoVariable' => 'S');
    $arrMapaDatos['xml_respuesta'     ] = Array('NombreVariable' => 'strXMLRespuesta'    , 'TipoVariable' => 'S');
    $arrMapaDatos['arr_datos'         ] = Array('NombreVariable' => 'strArrDatos'        , 'TipoVariable' => 'S');

    $this->__ArmarDatosPrivados('cotizaciones_qualitas', $arrMapaDatos, 'id_cotizacion');
    $this->SeleccionarPorIndice($intIdCotizacion);
  }
  
  static function DigitoVerificadorAmis($strAmis) {
    $strAmis = sprintf("%05d", $strAmis);
    
    $intDV0  = $strAmis{0} + $strAmis{2} + $strAmis{4};
    $intDV0 *= 3;
    
    $intDV1  = $strAmis{1} + $strAmis{3};
    
    $intDV2  = $intDV0 + $intDV1;
    $intDV2 %= 10;
    
    if($intDV2 == 0) {
      return 0;
    } else {
      return 10 - $intDV2;
    }
  }
  
  /**
   * @param DatosCotizacionQualitas $oDatosCot
   */
  static function ObtenerXMLPeticion($oDatosCot, $intPaquete, $strTipoDoc = "C") {
    $oTemplate    = new Template();
    
    $intEntorno = "1"; // 1 => Pruebas 0 => Produccion
    
    if($strTipoDoc == "C") {
      // Se ponen todos los campos necesarios para una cotizacion. Los innecesarios van con sus defaults en blanco
      $strTipoMovimiento = "2";
      
      $strCalle     = "";
      $intColonia   = "";
      $intMunicipio = "";
      $intNumExt    = "";
      $intNumInt    = "";
      $strMotor     = "";
      $strSerie     = "";
      $strValor140  = "";
      // Checar esto: Zonificacion A19397090200
    } else if($strTipoDoc == "P") {
      // Se ponen todos los campos necesarios para una poliza. Aqui ya deben de venir TODOS los campos
      $strTipoMovimiento = "3";
      
      $strCalle     = $_POST["datos"]["aseg"]["calle"  ];
      $intColonia   = $oDatosCot->intColonia;
      $intMunicipio = $oDatosCot->intMunicipio;
      $intNumExt    = $_POST["datos"]["aseg"]["num_ext"];
      $intNumInt    = $_POST["datos"]["aseg"]["num_int"];
      $strMotor     = $_POST["datos"]["vehi"]["motor"  ];
      $strSerie     = $_POST["datos"]["vehi"]["serie"  ];
      
      $_strTel          = str_replace("'", "", str_replace('"', "", str_replace("|", "", $_POST["datos"]["aseg"]["telefono"     ])));
      $_strTrabGob      = str_replace("'", "", str_replace('"', "", str_replace("|", "", $_POST["datos"]["aseg"]["trab_gob"     ])));
      $_strDescTrabGob  = str_replace("'", "", str_replace('"', "", str_replace("|", "", $_POST["datos"]["aseg"]["desc_trab_gob"])));
      $_unxFechaNac     = Variables::DiasDesdeFecha("1967-12-31", $_POST["datos"]["aseg"]["fnac"]);
      $_intNacionalidad = str_replace("'", "", str_replace('"', "", str_replace("|", "", $_POST["datos"]["aseg"]["nacio"        ])));
      $_strOcupacion    = str_replace("'", "", str_replace('"', "", str_replace("|", "", $_POST["datos"]["aseg"]["ocupa"        ])));
      $_strGiroNegocio  = str_replace("'", "", str_replace('"', "", str_replace("|", "", $_POST["datos"]["aseg"]["giro"         ])));
      $_strEMail        = str_replace("'", "", str_replace('"', "", str_replace("|", "", $_POST["datos"]["aseg"]["email"        ])));
      $_strCURP         = str_replace("'", "", str_replace('"', "", str_replace("|", "", $_POST["datos"]["aseg"]["curp"         ])));
      $_strRFC          = str_replace("'", "", str_replace('"', "", str_replace("|", "", $_POST["datos"]["aseg"]["rfc"          ])));
      
      $strValor140  = "$_strTel|$_strTrabGob|$_strDescTrabGob|$_unxFechaNac|$_intNacionalidad|$_strOcupacion|$_strGiroNegocio|$_strEMail|$_strCURP|$_strRFC";
    }
    
    // Constantes
    $strNoNegocio      = "02795";
    $strAgente         =  "2113";
    $strTarifa         =  "1308";
    $strTipoUso        =     "1";
    
    // Obtenemos el ID de la clave necesaria
    $oConecta = new Conecta();
    $strConsulta = "SELECT cve_qualitas FROM cat_modelos_antartica WHERE id_modelo = {$oDatosCot->strAMIS}";
    $oConecta->Consulta($strConsulta);
    $intIdAMIS = $oConecta->Field('cve_qualitas');
    
    $strNombreCompleto = "{$oDatosCot->strAPaterno} {$oDatosCot->strAMaterno} {$oDatosCot->strNombre}";
    $intIdEstado       = $oDatosCot->intEstado      ;
    $intMunicipio      = $oDatosCot->intMunicipio   ;
    $intColonia        = $oDatosCot->intColonia     ;
    $strCP             = $oDatosCot->intCP          ;
    $strNombre         = $oDatosCot->strNombre      ;
    $strAPaterno       = $oDatosCot->strAPaterno    ;
    $strAMaterno       = $oDatosCot->strAMaterno    ;
    $strCveAMIS        = $intIdAMIS                 ;
    $strAnioModelo     = $oDatosCot->intMarcaAnio   ;
    $dteFechaEmision   = $oDatosCot->dteFechaEntrada;
    $dteFechaInicio    = $oDatosCot->dteFechaEntrada;
    $dteFechaTermino   = date("Y-m-d", mktime(0, 0, 0, date("m", strtotime($oDatosCot->dteFechaEntrada)) + $oDatosCot->intVigencia, date("d", strtotime($oDatosCot->dteFechaEntrada)), date("Y", strtotime($oDatosCot->dteFechaEntrada))));
    
    $intDigVer = CotizacionQualitas::DigitoVerificadorAmis($strCveAMIS);
    
    eval('$strRes = "' . $oTemplate->Get('templates_xml/cotizacion_qualitas.tpl.php') . '";');
    
    return $strRes;
  }
}

class FiltroCotizacionQualitas extends Filtro {
  function FiltroCotizacionQualitas() {
    $arrMapaDatos['id_dato_cotizacion'] = "Cotizacion General";
    $arrMapaDatos['tipo'              ] = "Tipo"              ;
    
    parent::CrearFiltro("cotizaciones_qualitas", "id_cotizacion", $arrMapaDatos, "Busqueda", "", "", "CotizacionQualitas");
  }
}

class ABC_CotizacionQualitas extends ABC_Base {
  function ABC_CotizacionQualitas() {
    $strClaseBase     = "CotizacionQualitas"      ;
    $strClaseFiltro   = "FiltroCotizacionQualitas";
    $strCampoMostrar  = "id_cotizacion"           ;
    $strOpcionListado = "abc_cotizacion_qualitas" ;
    $strOpcionGuardar = "abc_cotizacion_qualitas" ;

    $arrMapaDatos = array();
    $arrMapaDatos['id_dato_cotizacion'] = "Cotizacion General";
    $arrMapaDatos['tipo'              ] = "Tipo"              ;
    
    $arrMapaDatos['no_cotizacion'     ] = "No. Cotizacion"    ;
    $arrMapaDatos['no_endoso'         ] = "No. Endoso"        ;
    $arrMapaDatos['tipo_endoso'       ] = "Tipo Endoso"       ;
    $arrMapaDatos['no_otra'           ] = "No. Otra"          ;
    
    $arrMapaDatos['prima_neta'        ] = "Prima neta"        ;
    $arrMapaDatos['prima_total'       ] = "Prima Total"       ;
    
    $arrMapaDatos['xml_envio'         ] = "XML Envio"         ;
    $arrMapaDatos['xml_respuesta'     ] = "XML Respuesta"     ;
    $arrMapaDatos['arr_datos'         ] = "Arreglo Datos"     ;
    

    $arrReferencias = array();
    
    $this->Inicializar($strClaseBase, $arrMapaDatos, $strOpcionListado, $strOpcionGuardar, $strCampoMostrar, $strClaseFiltro, $arrReferencias);
    
    $this->bolABCLista             = true ;
    $this->bolABCListaOcultarTD    = true ;
    $this->bolPosibleNuevoElemento = false;
    $this->intTipoGuardado         = 1    ;
    $this->intNumeroRes            = 20   ;
    $this->bolSoloLectura          = true ;
    $this->bolOcultarTituloEnLista = true ;
    $this->bolABCListaMostrarInfo  = true ;
  }
}

?>